#!/bin/sh


###########################################################
#             DEFINE FILES AND VARIABLES
###########################################################

BIN_DIR="/usr/bin"
LOG_DIR="/usr/log"

# operations
OP_IFUP="ifup"
OP_IFDOWN="ifdown"
OP_IFSTATUS="ifstatus"

###########################################################
#                     FUNCTIONS
###########################################################

###########################################################
#  Logging
###########################################################
LOG_INFO () 
{
  logger -p local0.notice $LOGGER_V -t dongle **INFO** "$*"
}
LOG_ERR () 
{
  logger -p local0.err $LOGGER_V -t dongle **ERROR** "$*"
}
LOG_CRIT () 
{
  logger -p local0.crit $LOGGER_V -t dongle **CRITICAL** "$*"
}

###########################################################
#  Shell command wrappers - mainly used to log errors
###########################################################
SHELL_ERR_LOG()
{
  output=`$1 2>&1`
  local rc=$?
  if [ $rc -ne 0 ]; then
    LOG_ERR $1 "command output: ($output), command rc ($rc)"
  fi
  return $rc
}
SHELL_CRIT_LOG()
{
  output=`$1 2>&1`
  local rc=$?
  if [ $rc -ne 0 ]; then
    LOG_CRIT $1 "command output: ($output), command rc ($rc)"
  fi
  return $rc
}

do_exec_shell()
{
  if [ "$OPERATION" = "$OP_IFUP" ]; then
    /etc/init.d/gpsd start
    ifup $INTERFACE
    echo "done"
  elif [ "$OPERATION" = "$OP_IFDOWN" ]; then
    /etc/init.d/gpsd stop
    ifdown $INTERFACE
    echo "done"
  elif [ "$OPERATION" = "$OP_IFSTATUS" ]; then
    json_load "$(ifstatus $INTERFACE)"

    json_get_var var1 up
    json_get_var var2 available

    echo "$var1"
  fi
}

###########################################################
#                      MAIN
###########################################################

. /usr/share/libubox/jshn.sh

OPERATION=""
INTERFACE=""

LOG_INFO "dongle.sh $*"

while getopts d:hs:u:Xz opt
do
   case "$opt" in
      d) OPERATION=$OP_IFDOWN;INTERFACE=$OPTARG;;
      h) print_help;;
      s) OPERATION=$OP_IFSTATUS;INTERFACE=$OPTARG;;
      u) OPERATION=$OP_IFUP;INTERFACE=$OPTARG;;
      X) set -x;;
      z) initialize;;
      \?) print_help;;
   esac
done


do_exec_shell


exit 0
